﻿//用户校验的方法
//这个方法将使用XMLHTTPRequest对象进行AJAX的异步数据交互
var xmlhttp;
function verify() {
    //1.使用dom方式获取文本框中的值
    //一个元素节点对应HTML页面中的一个标签，如果<input>.value可以获取一个元素节点的value属性值
    var userName = document.getElementById("userName").value;
    //2.创建XMLHttpRequest对象，这是XMLHttpRequest对象使用中最复杂的一步，
    // 需要针对IE和其他类型的浏览器建立这个对象的不同方式写不同代码

    if (window.XMLHttpRequest) {
        //针对FireFox，Mozillar，Opera，Safari，IE7，IE8
        xmlhttp = new XMLHttpRequest();
        //针对某些特定版本的mozillar浏览器的BUG进行修正
        if (xmlhttp.overrideMimeType) {
            xmlhttp.overrideMimeType("text/xml");
        }
    } else if (window.ActiveXObject) {
        //针对IE6，IE5.5，IE5
        //两个可以用于XMLHttpRequest对象的控件名称，保存在一个js的数组中，
        var activexName = ["MSXML2.XMLHTTP","Microsoft.XMLHTTP"];
        for (var i = 0; i < activexName.length; i++) {
            try {
                //取出一个空间名进行创建，如果创建成功就终止循环
                //如果创建失败，会抛出异常，然后可以继续循环，继续尝试创建
                xmlhttp = new ActiveXObject(activexName[i]);
                break;
            } catch(e) {
                //catch中不做任何操作使循环继续
            }
        }
    }
    //确认XMLHttpRequest对象创建成功
    if (!xmlhttp) {
        alert("XMLHttpRequest对象创建失败！");
    } else {
        alert("readyState=" + xmlhttp.readyState);
        /*
         readyState:请求状态
         0=未初始化
         1=open方法成功调用以后
         2=服务器已经应答客户端的请求
         3=交互中，Http头信息已经接收，响应数据尚未接收
         4=数据接收完成
         readyState一改变callback就会被调用
         */
    }

    //2.注册回调函数
    //注册回调函数时，只需要函数名，不需要括号
    //加了括号表示调用这个函数，就会把函数返回值注册上，这是错误的
    xmlhttp.onreadystatechange = callback;

    //3.设置连接信息
    //第一个参数表示http的请求方式，支持所有http的请求方式，主要用get和post
    //第二个参数表示请求的url地址，get方式请求的参数也在url中
    //第三个参数表示参与异步还是同步方式交互，true表示异步
    //get方式请求
//    xmlhttp.open("GET", "ajaxservlet?name=" + userName, true);
   //4.发送数据，开始和服务器端进行交互
    //同步方式下，send这句话会在服务器端数据回来后才执行完
    //异步方式下，send这句会立即执行完
    //参数是null，因为get的方式所要发送的数据都包含在了url中了
//    xmlhttp.send(null);


    //post方式请求
    xmlhttp.open("POST", "ajaxservlet", true);
    //post方式需要自己设置http的请求头
    xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
    //post方式发送数据
    xmlhttp.send("name="+userName);


}
//回调函数
function callback() {
    alert("readyState=" + xmlhttp.readyState);
    //5.接收响应数据
    //判断对象的状态是否交互完成
    //4表示交互成功
    if (xmlhttp.readyState == 4) {
        //判断http的交互是否成功
        //200表示交互成功
        if (xmlhttp.status == 200) {
            //获取服务器端返回的数据
            //获取服务器端输出的纯文本数据
            var responseText = xmlhttp.responseText;
            //将数据显示在页面上
            //通过dom方式找到div标签对应的元素节点
            var divNode = document.getElementById("result");
            divNode.innerHTML = responseText;
        }
    }
}







